package store.lunangangster.engine.bpmn.parser.handler;

import store.lunangangster.bpmn.model.BaseElement;
import store.lunangangster.engine.bpmn.parser.BpmnParser;

/**
 * 解析初始的Bpmn对象，为其赋予引擎所需要的语义，并将Bpmn对象转化为引擎所需要的对象。
 * <p>例如：
 * <ul>
 *   <li>解析Process，并将其转化为ProcessDefinition</li>
 *   <li>为各种FlowElement赋予其相应的行为，详见: {@link store.lunangangster.engine.impl.bpmn.behavior.ModelBehavior}</li>
 * </ul>
 * 
 * @author cwk
 * @version 1.0
 */
public interface BpmnParseHandler {

  /**
   * 获取当前处理器的作用类型
   * @return  {@link BaseElement}的子类Class
   */
  public Class<? extends BaseElement> getType();

  /**
   * Bpmn对象的处理方法
   */
  public void handle(BpmnParser bpmnParser, BaseElement element);
}
